package com.example.votemanage.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.votemanage.config.HttpClientUtil;
import com.example.votemanage.config.WxApiConfig;
import com.example.votemanage.entity.VoteUser;
import com.example.votemanage.service.impl.VoteUserServiceImpl;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

@Controller
@RequestMapping("/vote-user")
public class VoteUserController {
    @Resource
    VoteUserServiceImpl voteUserService;

    @RequestMapping("/dologin")
    public String doLogin(){
        return "login";
    }
//    @RequestMapping("/login")
//    public String login(String account, String password, HttpServletRequest request){
//        QueryWrapper<VoteUser> qw=new QueryWrapper<>();
//        qw.eq("vu_user_id",account);
//        qw.eq("vu_password",password);
//        VoteUser voteUser=voteUserService.getOne(qw);
//        if(voteUser!=null){
//            if(voteUser.getVuStatus()==1){
//                request.setAttribute("errorMsg","该账号已被禁用，请联系管理员！");
//                return "login";
//            }
//            else{
//                request.getSession().setAttribute("userinfo",voteUser);
//            }
//        }else{
//            request.setAttribute("errorMsg","用户名或密码错误！");
//            return "login";
//        }
//        return "redirect:/vote-subject/index";
//    }
    @RequestMapping("/test")
    @ResponseBody
    @CrossOrigin
    public Map<String,Object> test(String username,String password,HttpServletRequest res){
        QueryWrapper<VoteUser> qw=new QueryWrapper<>();
        qw.eq("vu_user_id",username);
        qw.eq("vu_password",password);
        VoteUser voteUser=voteUserService.getOne(qw);
        Map map=new HashMap();
        if(voteUser!=null){
            if(voteUser.getVuStatus()==1){
                map.put("errorMsg","该账号已被禁用，请联系管理员！");
            }
            else{
                map.put("logintype",true);
                map.put("userinfo",voteUser);
                res.getSession().setAttribute("userinfo",voteUser);
            }
        }else{
            map.put("errorMsg","用户名或密码错误！");
        }
        return map;
    }

    /**
     * 微信一键登录
     * @param code  登录时获取的 code，可通过wx.login获取
     * @return
     */
    @RequestMapping("/wxlogin")
    @ResponseBody
    public VoteUser wxlogin(String code){
        //System.out.println();
        String openid=(new JSONObject(HttpClientUtil.doGet(WxApiConfig.WXLOGIN_JSCODE2SESSION+"&js_code="+code))).get("openid").toString();
        QueryWrapper<VoteUser> qw=new QueryWrapper<>();
        qw.eq("openid",openid);
        VoteUser voteUser=voteUserService.getOne(qw);
        if(voteUser==null) {
            voteUser=new VoteUser();
            voteUser.setOpenid(openid);
            voteUser.setVuUserId(openid);
            voteUser.setVuUserName("微信用户"+ UUID.randomUUID().toString().substring(0,10));
            voteUser.setVuStatus(2);
            voteUser.setVuVersion(1);
            voteUser.setVuPassword("");
            voteUserService.save(voteUser);
        }
        return  voteUser;
    }
}
